import requests
import math
import json
def spider1():
    url = 'http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=keyword'
    location = input("请输入你要查询的位置：")
    ''' 需要表单提交的数据，
        - keyword表示搜索的关键字(也就是地址)
        - pageIndex表示页面索引，第几页
        - pageSize表示页面数据数量，有几条数据
    '''
    data ={
        'cname': '',
        'pid': '',
        'keyword': location,
        'pageIndex': '1',
        'pageSize': '10',
    }
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36"
    }
    ## 使用post请求，输入url表单需要的数据以及请求头。
    response = requests.post(url=url,data=data,headers=headers)
    ## 转换成json格式
    da = response.json()
    ## 所查询的一个有多少个餐厅
    num = da['Table'][0]['rowcount']
    print("你搜索的："+location+"一共有："+str(num)+"个餐厅")
    ## 向上取整，计算一共有多少页
    page = math.ceil(num/10)
    print("一共有："+str(page)+"页")
    ## 新建一个集合，把所有json数据放进这个集合里面，然后写出
    result = []
    for i in range(0,page):
        ## 修改表单pageIndex(代表第几页)的数据，这个表示重新开始爬取数据，从第一页开始爬取
        data["pageIndex"]=i+1
        print("当前正在爬取第" + str(data["pageIndex"]) + "页")
        ## 发起post请求
        response = requests.post(url=url, data=data,headers=headers)
        ## 获取到数据，把数据放进result集合里面
        result += response.json()['Table1']
        print("爬取第"+str(data["pageIndex"])+"页面完毕")
    print("写入数据...")
    fp = open(location+".json","w+",encoding="utf-8")
    json.dump(result,fp=fp,ensure_ascii=False)
    print("写入完毕，爬虫结束！")

if __name__ == '__main__':
    spider1()